package com.syh.jn.scm.service.api.supplier.stock;

import cn.redscarf.commons.wrapper.Wrapper;
import com.syh.jn.scm.dto.supplier.stock.StockOtherOutBillItemVo;
import com.syh.jn.scm.dto.supplier.stock.StockOtherOutBillMto;
import com.syh.jn.scm.dto.supplier.stock.StockOtherOutBillSto;
import com.syh.jn.scm.dto.supplier.stock.StockOtherOutBillVo;
import com.syh.jn.scm.service.core.CreateService;
import com.syh.jn.scm.service.core.DeleteService;
import com.syh.jn.scm.service.core.ReadService;
import com.syh.jn.scm.service.core.UpdateService;

import java.util.List;

/**
 * 其他出库接口
 */
public interface StockOtherOutBillService extends CreateService<StockOtherOutBillSto, Long>, DeleteService<Long>, UpdateService<StockOtherOutBillMto>, ReadService<StockOtherOutBillVo, Long> {

  /**
   * 取消其他出入库单
   *
   * @param id 其他出入库单id
   */
  void cancel(Long id);

  /**
   * 确认其他出入库单
   *
   * @param id 其他出入库单id
   * @param recordDateTimestamp 出库时间
   */
  void confirm(Long id,Long recordDateTimestamp);

  /**
   * 取消确认其他出入库单
   *
   * @param id 其他出入库单id
   */
  void cancelConfirm(Long id);

  /**
   * 取消锁状态
   *
   * @param id 其他出入库单id
   */
  void unLock(Long id);

  /**
   * 获取其他出入库单明细
   *
   * @param stockOtherOutBillId 他出入库单id
   * @return 他出入库单明细list
   */
  List<StockOtherOutBillItemVo> findStockOtherOutBillItemVoListByOutBillId(Long stockOtherOutBillId);

  /**
   * 获取其它出入库单明细总条数
   *
   * @param wrapper 条件查询
   * @return 其它出入库单明细总条数
   */
  int getStockOtherOutBillItemVoCount(Wrapper wrapper);

  /**
   * 其它出入库明细分页
   *
   * @param wrapper  条件查询
   * @param startRow 当前页
   * @param count    页面大小
   * @return 其它出入库明细list
   */
  List<StockOtherOutBillItemVo> findStockOtherOutBillItemVoListPage(Wrapper wrapper, Integer startRow, Integer count);

}
